home *** CD-ROM | disk | FTP | other *** search
/ Suzy B Software 2 / Suzy B Software CD-ROM 2 (1994).iso / anidone / art4 / art4_med.s < prev    next >
Text File  |  1995-05-02  |  5KB  |  292 lines

  1.   TEXT
  2.   INCLUDE TOS\GEMDOS.S
  3.   INCLUDE TOS\XBIOS.S
  4.  
  5. _FG_BP_1=24                         ;LINE-A VARIABLES
  6. _FG_BP_2=26
  7. _FG_BP_3=28
  8. _FG_BP_4=30
  9. _LSTLIN =32
  10. _LN_MASK=34
  11. _WRT_MOD=36
  12. _X1     =38
  13. _Y1     =40
  14. _X2     =42
  15. _Y2     =44
  16.  
  17. SAVEA0 MACRO                        ;SAVE LINE-A POINTER
  18.   MOVE.L A0,SVA0
  19.   ENDM
  20.  
  21. GETA0 MACRO                         ;GET LINE-A POINTER
  22.   MOVE.L SVA0,A0
  23.   ENDM
  24.  
  25. AINIT MACRO                         ;INITIALIZE LINE-A GRAPHICS
  26.   DC.W $A000
  27.   ENDM
  28.  
  29. ACOLOR MACRO $\1,$\2,$\3,$\4        ;SET LINE-A PLANE COLORS
  30.   AND #1,\1
  31.   MOVE \1,_FG_BP_1(A0)
  32.   AND #1,\2
  33.   MOVE \2,_FG_BP_2(A0)
  34.   AND #1,\3
  35.   MOVE \3,_FG_BP_3(A0)
  36.   AND #1,\4
  37.   MOVE \4,_FG_BP_4(A0)
  38.   ENDM
  39.  
  40. AWRITEMODE MACRO $\1                ;SET LINE-A WRITE MODE
  41.   MOVE \1,_WRT_MOD(A0)
  42.   ENDM
  43.  
  44. ALINEMASK MACRO $\1                 ;SET LINE-A LINE MASK
  45.   MOVE \1,_LN_MASK(A0)
  46.   ENDM
  47.  
  48. ALINE MACRO $\1,$\2,$\3,$\4         ;DRAW LINE-A LINE
  49.   MOVE \1,_X1(A0)
  50.   MOVE \2,_Y1(A0)
  51.   MOVE \3,_X2(A0)
  52.   MOVE \4,_Y2(A0)
  53.   MOVE #-1,_LSTLIN(A0)
  54.   DC.W $A003
  55.   ENDM
  56.  
  57. START:
  58.   DC.W $A00A                        ;HIDE MOUSE
  59.   GETREZ                            ;SAVE RESOLUTION
  60.   MOVE D0,REZ
  61.   SETSCREEN #1,-1,-1                ;SET LO-RES
  62.   AINIT
  63.   SAVEA0
  64.   ALINEMASK #$FFFF
  65.   AWRITEMODE #1
  66.   MOVE #10000,DLY
  67.  
  68. RESTART:
  69. RNDX:                               ;RANDOM X (0-639)
  70.   RANDOM
  71.   AND #$3FF,D0
  72.   CMP #639,D0
  73.   BHI RNDX
  74.   MOVE D0,X
  75. RNDMVX:                             ;RANDOM MOVE (3~-3, <>0)
  76.   RANDOM
  77.   AND #7,D0
  78.   SUB #3,D0
  79.   CMP #0,D0
  80.   BEQ RNDMVX
  81.   CMP #4,D0
  82.   BEQ RNDMVX
  83.   MOVE D0,MVX
  84. RNDY:                               ;RANDOM Y (0-199)
  85.   RANDOM
  86.   AND #$FF,D0
  87.   CMP #199,D0
  88.   BHI RNDY
  89.   MOVE D0,Y
  90. RNDMVY:                             ;RANDOM MOVE (3~-3, <>0)
  91.   RANDOM
  92.   AND #7,D0
  93.   SUB #3,D0
  94.   CMP #0,D0
  95.   BEQ RNDMVY
  96.   CMP #4,D0
  97.   BEQ RNDMVY
  98.   MOVE D0,MVY
  99. RNDX2:                              ;RANDOM X2 (0-639)
  100.   RANDOM
  101.   AND #$3FF,D0
  102.   CMP #639,D0
  103.   BHI RNDX2
  104.   MOVE D0,X2
  105. RNDMVX2:                            ;RANDOM MOVE (3~-3, <>0)
  106.   RANDOM
  107.   AND #7,D0
  108.   SUB #3,D0
  109.   CMP #0,D0
  110.   BEQ RNDMVX2
  111.   CMP #4,D0
  112.   BEQ RNDMVX2
  113.   MOVE D0,MVX2
  114. RNDY2:                              ;RANDOM Y2 (0-199)
  115.   RANDOM
  116.   AND #$FF,D0
  117.   CMP #199,D0
  118.   BHI RNDY2
  119.   MOVE D0,Y2
  120. RNDMVY2:                            ;RANDOM MOVE (3~-3, <>0)
  121.   RANDOM
  122.   AND #7,D0
  123.   SUB #3,D0
  124.   CMP #0,D0
  125.   BEQ RNDMVY2
  126.   CMP #4,D0
  127.   BEQ RNDMVY2
  128.   MOVE D0,MVY2
  129.  
  130. CLEARSCREEN:
  131.   PRINTLINE CLS
  132.  
  133. RNDLEN:                             ;GET RANDOM LENGTH
  134.   RANDOM
  135.   AND #$3F,D0
  136.   ADD #25,D0
  137.   MOVE D0,LENGTH
  138. RNDCOL:                             ;GET RANDOM COLOR
  139.   RANDOM
  140.   MOVE D0,D7
  141.   RANDOM
  142.   MOVE D0,D6
  143.   RANDOM
  144.   MOVE D0,D5
  145.   RANDOM
  146.  
  147.   GETA0
  148.   ACOLOR D0,D5,D6,D7
  149.  
  150. AGAIN:                              ;MAIN LOOP
  151.   ALINE X,Y,X2,Y2
  152.   MOVE #640,D4
  153.   MOVE D4,D5
  154.   SUB X,D4
  155.   SUB X2,D5
  156.   GETA0
  157.   ALINE D4,Y,D5,Y2                  ;640-X,Y -> 640-X2,Y
  158.   MOVE #200,D4
  159.   MOVE D4,D5
  160.   SUB Y,D4
  161.   SUB Y2,D5
  162.   GETA0
  163.   ALINE X,D4,X2,D5                  ;X,200-Y -> X2,200-Y2
  164.   MOVE #640,D4
  165.   MOVE D4,D5
  166.   MOVE #200,D6
  167.   MOVE D6,D7
  168.   SUB X,D4
  169.   SUB X2,D5
  170.   SUB Y,D6
  171.   SUB Y2,D7
  172.   GETA0
  173.   ALINE D4,D6,D5,D7                 ;640-X,200-Y -> 640-X2,200-Y2
  174.   RAWCONIO #$FF                     ;CHECK KEYBOARD
  175.   GETA0
  176.   CMP #'',D0
  177.   BEQ DONE                          ;EXIT
  178.   CMP #$0D,D0
  179.   BEQ RESTART
  180.   CMP #' ',D0
  181.   BEQ CLEARSCREEN
  182.  
  183.   CMP #'1',D0
  184.   BNE P2
  185.   MOVE #10000,DLY
  186.   BRA CONTINUE
  187. P2:
  188.   CMP #'2',D0
  189.   BNE P3
  190.   MOVE #8000,DLY
  191.   BRA CONTINUE
  192. P3:
  193.   CMP #'3',D0
  194.   BNE P4
  195.   MOVE #6000,DLY
  196.   BRA CONTINUE
  197. P4:
  198.   CMP #'4',D0
  199.   BNE P5
  200.   MOVE #4000,DLY
  201.   BRA CONTINUE
  202. P5:
  203.   CMP #'5',D0
  204.   BNE P0
  205.   MOVE #2000,DLY
  206.   BRA CONTINUE
  207. P0:
  208.   CMP #'0',D0
  209.   BNE CONTINUE
  210.   MOVE #0,DLY
  211.  
  212. CONTINUE:
  213.   MOVE LENGTH,D0                    ;DECREMENT LENGTH
  214.   SUB #1,D0
  215.   MOVE D0,LENGTH
  216.   BEQ RNDLEN                        ;GET NEW LENGTH, COLOR
  217.  
  218.   MOVE X,D0                         ;MOVE X
  219.   ADD MVX,D0
  220.   CMP #0,D0
  221.   BLT FIXX
  222.   CMP #639,D0
  223.   BLE XOK
  224. FIXX:                               ;FIX X (0 <= X <= 319)
  225.   NEG MVX
  226.   ADD MVX,D0
  227. XOK:
  228.   MOVE D0,X
  229.  
  230.   MOVE Y,D0                         ;MOVE Y
  231.   ADD MVY,D0
  232.   CMP #0,D0
  233.   BLT FIXY
  234.   CMP #199,D0
  235.   BLE YOK
  236. FIXY:                               ;FIX Y (0 <= Y <= 199)
  237.   NEG MVY
  238.   ADD MVY,D0
  239. YOK:
  240.   MOVE D0,Y
  241.  
  242.   MOVE X2,D0                        ;MOVE X2
  243.   ADD MVX2,D0
  244.   CMP #0,D0
  245.   BLT FIXX2
  246.   CMP #639,D0
  247.   BLE X2OK
  248. FIXX2:                              ;FIX X2 (0 <= X2 <= 319)
  249.   NEG MVX2
  250.   ADD MVX2,D0
  251. X2OK:
  252.   MOVE D0,X2
  253.  
  254.   MOVE Y2,D0                        ;MOVE Y2
  255.   ADD MVY2,D0
  256.   CMP #0,D0
  257.   BLT FIXY2
  258.   CMP #199,D0
  259.   BLE Y2OK
  260. FIXY2:                              ;FIX Y2 (0 <= Y2 <= 199)
  261.   NEG MVY2
  262.   ADD MVY2,D0
  263. Y2OK:
  264.   MOVE D0,Y2
  265.  
  266.   MOVE DLY,D0                       ;PAUSE
  267. DELAY: DBRA D0,DELAY
  268.   BRA AGAIN                         ;NEXT LINE!
  269.  
  270. DONE:
  271.   SETSCREEN REZ,-1,-1               ;RESTORE RESOLUTION
  272.   TERM
  273.  
  274.   DATA
  275. CLS DC.B 'E',0,0
  276.  
  277.   BSS
  278. REZ DS.W 1
  279. X DS.W 1
  280. MVX DS.W 1
  281. Y DS.W 1
  282. MVY DS.W 1
  283. X2 DS.W 1
  284. MVX2 DS.W 1
  285. Y2 DS.W 1
  286. MVY2 DS.W 1
  287. SVA0 DS.L 1
  288. LENGTH DS.W 1
  289. DLY DS.W 1
  290.   END
  291.